package com.link2room.rodimus.facade;

import com.link2room.common.dto.param.base.BaseL2rParamDto;
import com.link2room.common.jpa.result.QueryResult;
import com.link2room.rodimus.dto.param.base.SignInAwardTypeDto;
import com.link2room.rodimus.dto.param.base.SignInBaseDto;
import com.link2room.rodimus.dto.param.manager.SignInRuleBaseCreateParamDto;
import com.link2room.rodimus.dto.param.manager.SignInRuleBaseFindParamDto;
import com.link2room.rodimus.dto.param.manager.SignInRuleBaseModifyParamDto;

/**
 * Created by LN on 2018/1/12
 */
public interface ISignInManagerFacadeService {

    /**
     * 创建签到规则
     * @param paramDto
     */
    void createSignInRuleBase(SignInRuleBaseCreateParamDto paramDto) throws Exception;

    /**
     * 签到规则列表
     * @param paramDto
     * @return
     */
    QueryResult<SignInBaseDto> getSignInBases(SignInRuleBaseFindParamDto paramDto) throws Exception;

    /**
     * 签到规则详情
     * @param paramDto
     * @return
     * @throws Exception
     */
    SignInBaseDto getSignInBase(SignInRuleBaseFindParamDto paramDto) throws Exception;

    /**
     * code 是否重复
     * @param paramDto
     * @return
     */
    boolean ruleCodeIsDuplicate(SignInRuleBaseFindParamDto paramDto) throws Exception;

    /**
     * 奖励类型
     * @return
     */
    QueryResult<SignInAwardTypeDto> awardTypes(BaseL2rParamDto paramDto) throws Exception;

    /**
     * 修改签到规则
     * @param paramDto
     */
    void modifySignInRuleBase(SignInRuleBaseModifyParamDto paramDto) throws Exception;
}
